{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.Reliability Fusion Map (RFM)\n",
    "\n",
    "<br>\n",
    "\n",
    "1. `matrix` is global variable from csv file <br>\n",
    "    `f1, f2, f3...` is CNN confidence vector; <br>\n",
    "    `p` = CNN predict label; <br>\n",
    "    `y` = label of patch; <br>\n",
    "    `texture_quality` = patch texture quality factor, see formula(2) in paper\n",
    "    <hr>\n",
    "    \n",
    "2. Fusion step: `filter_texture()`->`fushion_map()`->`fusion_denisty()`; <br>\n",
    "    `filter_texture()`: filter low texture patch predictions of CNN, we set threshold_texture=0;<br>\n",
    "    `fushion_map()`: fusion step1, see formula(3) in paper; <br>\n",
    "    `fusion_denisty()`: fusion step2, see formula(4), (5) in paper; <br>\n",
    "    <hr>\n",
    "\n",
    "3. Output matrix structure is the same as input matrix <br>\n",
    "    <hr>\n",
    "\n",
    "\n",
    "## 2.About\n",
    "\n",
    "This is tampering localization experiment for RFM algorithm (see experiment 2-1 in paper). <br>\n",
    "\n",
    "\n",
    "> $matrix=[f1, f2, f3, f4, f5... p, y, texture_quality]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 236,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os, math, seaborn as sns, numpy as np, pandas as pd, matplotlib.pyplot as plt, matplotlib.image as mpimg\n",
    "from collections import Counter\n",
    "sns.set()\n",
    "\n",
    "# matrix=[f1, f2, f3, f4, f5, p, y, texture_quality]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 221,
   "metadata": {},
   "outputs": [],
   "source": [
    "root_path = \"/data/experiment\"\n",
    "scope_name = \"pre-train_32x32\" # The input csv is 64x64 overlap patches, with step of 32\n",
    "\n",
    "csv_root = os.path.join(root_path, scope_name)\n",
    "ground_root = os.path.join(root_path, \"ground\")\n",
    "splice_root = os.path.join(root_path, \"splicing\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 222,
   "metadata": {},
   "outputs": [],
   "source": [
    "def filter_texture(matrix, label, threshold=0.4):\n",
    "    '''\n",
    "    Filter low texture patches\n",
    "    @matrix=[f1, f2, f3, f4, f5, p, y, texture_quality]\n",
    "    '''\n",
    "    # get placeholder\n",
    "    flag = (matrix[:, 7] < threshold)\n",
    "    matrix[flag, :5] = 0\n",
    "    matrix[flag, label] = 1\n",
    "    return matrix\n",
    "\n",
    "def fushion_map(matrix, w, h):\n",
    "    '''\n",
    "    Fusion step1: F & Q\n",
    "    After fusion，w=w-1, h=h-1, texture_quality，label=4个取投票\n",
    "    @matrix=[f1, f2, f3, f4, f5, p, y, texture_quality]\n",
    "    '''\n",
    "    matrix = np.reshape(matrix, (h, w, -1))\n",
    "    result = np.zeros((h-1, w-1, 7))\n",
    "    offset = [[0,0], [0,1], [1,0], [1,1]]\n",
    "    \n",
    "    for j in range(h - 1):\n",
    "        for i in range(w - 1):\n",
    "            # temp matrix\n",
    "            tmp_matrix = np.zeros([5])\n",
    "            total = matrix[j, i, 7] + matrix[j, i+1, 7] + matrix[j+1, i, 7] + matrix[j+1, i+1, 7]\n",
    "            for p in offset:\n",
    "                tmp_matrix += (matrix[j+p[0], i+p[1], :5]) * (matrix[j+p[0], i+p[1], 7] / total)\n",
    "            \n",
    "            # append result to F confidence\n",
    "            result[j, i, :5] = tmp_matrix\n",
    "            result[j, i, 5] = np.array(np.argmax(result[j, i, :5]), dtype=np.int32)\n",
    "            \n",
    "            label_map = []\n",
    "            for p in offset:\n",
    "                label_map.append(int(matrix[j+p[0], i+p[1], 6]))\n",
    "            result[j, i, 6] = Counter(label_map).most_common()[0][0]\n",
    "    return np.reshape(result, ((w-1) * (h-1), 7))\n",
    "\n",
    "def fusion_denisty(matrix, w, h, label, threshold=0.6):\n",
    "    '''\n",
    "    Fusion step2: R & ρ\n",
    "    @matrix=[f1, f2, f3, f4, f5, p, y, texture_quality]\n",
    "    '''\n",
    "    flag = np.where(matrix[:, 5] != label)\n",
    "    matrix = np.reshape(matrix, (h, w, -1))\n",
    "    source_matrix = matrix.copy()\n",
    "    \n",
    "    offset = [\n",
    "        [-1, -1], [-1, 0], [-1, 1], \n",
    "        [0, -1], [0, 1], \n",
    "        [1, -1], [1, 0], [1, 1]\n",
    "    ]\n",
    "    for index in list(flag[0]):\n",
    "        x = int(index % w)\n",
    "        y = int(index / w)\n",
    "        \n",
    "        length, cnt = 0, 0\n",
    "        for p in offset:\n",
    "            _x = x + p[1]\n",
    "            _y = y + p[0]\n",
    "            \n",
    "            # 检测是否在边界，如果不是边界要计算\n",
    "            if (_x >= 0) and (_y >= 0) and (_x < w) and (_y < h):\n",
    "                cnt += 1\n",
    "                # add check length+1\n",
    "                if source_matrix[_y][_x][5] != label:\n",
    "                    length += 1\n",
    "\n",
    "        # update confidence & label\n",
    "        if float(length / cnt) < threshold:\n",
    "            matrix[y, x, :5] = 0\n",
    "            matrix[y, x, label] = 1\n",
    "            matrix[y, x, 5] = label\n",
    "    return np.reshape(matrix, (w*h, -1))\n",
    "\n",
    "def show_map(matrix, w, h, label, threshold=0):\n",
    "    '''\n",
    "    show hotmap\n",
    "    @matrix=[f1, f2, f3, f4, f5, p, y]\n",
    "    '''\n",
    "    plt.clf()\n",
    "    label_list = np.ones([w*h], dtype=np.int32) * label\n",
    "    predict_list = matrix[0: w*h, 5]\n",
    "    \n",
    "    diff_matrix = np.array(np.abs(label_list - predict_list), dtype=np.bool) * 1\n",
    "    conf_matrix = np.max(matrix[:, 0:5], axis=1)\n",
    "    \n",
    "    list_matrix = np.multiply(conf_matrix, diff_matrix)\n",
    "    list_matrix[list_matrix < threshold] = 0\n",
    "    \n",
    "    f, ax = plt.subplots(figsize=(16, 10))\n",
    "    xmap = np.reshape(list_matrix, (h, w))\n",
    "    return sns.heatmap(xmap, linewidths=.01, cmap='YlGnBu')\n",
    "\n",
    "def split_ground(image, w, h, label1, label2, shape=(32, 32), threshold=0.8):\n",
    "    '''\n",
    "    generate label of 32x32 patch from ground truth images\n",
    "    @param image: ground truth image, 0=forged, 255=pristine (pixel unit)\n",
    "    @param mark_x/mark_y: matrix coordinates of forged region\n",
    "    @return patch_label, mark_x, mark_y\n",
    "    '''\n",
    "    flag = True\n",
    "    w, h, size = int(w / shape[0] - 1), int(h / shape[1] - 1), shape[0] * shape[1]\n",
    "    result = np.ones([h - 1, w - 1]) * label2\n",
    "    mark_x, mark_y = [w - 1, 0], [h - 1, 0]\n",
    "    \n",
    "    for j in range(1, h - 1):\n",
    "        y = j * shape[1]\n",
    "        for i in range(1, w - 1):\n",
    "            x = i * shape[0]\n",
    "            # scan all patches\n",
    "            check = (image[y: y + shape[1], x: x + shape[0], 0].copy() / 255).astype(np.int32)\n",
    "            # take a threshold to mark patch as forged\n",
    "            if 1 - float(np.sum(check) / size) > threshold:\n",
    "                flag = False\n",
    "                result[j - 1, i - 1] = label1\n",
    "                mark_x[0] = min(mark_x[0], i - 1)\n",
    "                mark_x[1] = max(mark_x[1], i - 1)\n",
    "                mark_y[0] = min(mark_y[0], j - 1)\n",
    "                mark_y[1] = max(mark_y[1], j - 1)\n",
    "\n",
    "    # without find forged patches, mark mark_x/mark_y as full image\n",
    "    if flag:\n",
    "        t = mark_y[0]\n",
    "        mark_y[0] = mark_y[1]\n",
    "        mark_y[1] = t\n",
    "        t = mark_x[0]\n",
    "        mark_x[0] = mark_x[1]\n",
    "        mark_x[1] = t\n",
    "    \n",
    "    # @result=[y1, y2, y3...], mark_x=[min_x, max_x], mark_y=[min_y, max_y]\n",
    "    return np.reshape(result, ((w-1) * (h-1))), mark_x, mark_y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 232,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 Kodak_M1063_0_9565_Nikon_D200_0_15080_1540019393_3872_2592.csv\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.5/dist-packages/ipykernel_launcher.py:20: DeprecationWarning: `imread` is deprecated!\n",
      "`imread` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.\n",
      "Use ``imageio.imread`` instead.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.0 0.976598234230401\n",
      "2 Kodak_M1063_0_9457_Nikon_D200_0_15062_1540106699_3872_2592.csv\n",
      "0.986013986013986 0.9902138070418041\n",
      "3 Kodak_M1063_0_9585_Nikon_D200_0_15070_1540019711_3872_2592.csv\n",
      "0.9917695473251029 0.9989362833741091\n",
      "4 Sony_DSC-H50_0_46953_Rollei_RCP-7325XS_0_42204_1540042188_3072_2304.csv\n",
      "0.7208333333333333 0.9261398176291793\n",
      "5 Kodak_M1063_0_9457_Rollei_RCP-7325XS_0_42215_1540044821_3072_2304.csv\n",
      "1.0 0.8855623100303951\n",
      "6 Sony_DSC-H50_0_47027_Rollei_RCP-7325XS_0_42269_1540042378_3072_2304.csv\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.5/dist-packages/ipykernel_launcher.py:28: RuntimeWarning: invalid value encountered in double_scalars\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.0 0.9790273556231003\n",
      "7 Kodak_M1063_0_9583_Rollei_RCP-7325XS_0_42218_1540046473_3072_2304.csv\n",
      "0.7277777777777777 0.9194528875379939\n",
      "8 Kodak_M1063_0_9557_Nikon_D200_0_15046_1540018875_3872_2592.csv\n",
      "0.762987012987013 0.9219231996596107\n",
      "9 Rollei_RCP-7325XS_0_42208_Sony_DSC-H50_0_46903_1540023403_3456_2592.csv\n",
      "0.9 0.960831144017196\n",
      "10 Nikon_D200_0_15026_Kodak_M1063_0_9532_1540040877_3664_2748.csv\n",
      "0.9247311827956989 0.977947504302926\n",
      "11 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42222_1540022878_3072_2304.csv\n",
      "0.8752052545155994 0.965501519756839\n",
      "12 Sony_DSC-H50_0_46953_Agfa_Sensor505-x_0_1628_1540107258_2592_1944.csv\n",
      "0.7037037037037037 0.8332605848974247\n",
      "13 Kodak_M1063_0_9525_Nikon_D200_0_15046_1540018343_3872_2592.csv\n",
      "0.9919786096256684 0.9986171683863418\n",
      "14 Kodak_M1063_0_9583_Rollei_RCP-7325XS_0_42316_1540045751_3072_2304.csv\n",
      "0.7142857142857143 0.920516717325228\n",
      "15 Sony_DSC-H50_0_47027_Rollei_RCP-7325XS_0_42219_1540042280_3072_2304.csv\n",
      "0.9477611940298507 0.9747720364741641\n",
      "16 Nikon_D200_0_14908_Kodak_M1063_0_9393_1540041538_3664_2748.csv\n",
      "0.8181818181818182 0.8668244406196214\n",
      "17 Sony_DSC-H50_0_46951_Rollei_RCP-7325XS_0_42209_1540042627_3072_2304.csv\n",
      "0.9944444444444445 0.9954407294832827\n",
      "18 Kodak_M1063_0_9557_Rollei_RCP-7325XS_0_42207_1540046408_3072_2304.csv\n",
      "1.0 0.8922492401215806\n",
      "19 Sony_DSC-H50_0_47027_Agfa_Sensor505-x_0_1905_1540036389_2592_1944.csv\n",
      "0.9903846153846154 0.9818856394587516\n",
      "20 Rollei_RCP-7325XS_0_42208_Sony_DSC-H50_0_46910_1540023417_3456_2592.csv\n",
      "0.8298611111111112 0.9313350847862432\n",
      "21 Rollei_RCP-7325XS_0_42208_Sony_DSC-H50_0_46968_1540023653_3456_2592.csv\n",
      "1.0 0.9871029376641988\n",
      "22 Agfa_Sensor505-x_0_1857_Kodak_M1063_0_9540_1540017019_3664_2748.csv\n",
      "1.0 0.9934380378657487\n",
      "23 Sony_DSC-H50_0_47447_Agfa_Sensor505-x_0_1702_1540036274_2592_1944.csv\n",
      "0.8916666666666667 0.9718463553033609\n",
      "24 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42273_1540022561_3072_2304.csv\n",
      "0.6981818181818182 0.9045592705167174\n",
      "25 Nikon_D200_0_15026_Kodak_M1063_0_9489_1540040445_3664_2748.csv\n",
      "0.9862637362637363 0.9939759036144579\n",
      "26 Rollei_RCP-7325XS_0_42252_Sony_DSC-H50_0_46912_1540034388_3456_2592.csv\n",
      "0.7387218045112782 0.9330069262001432\n",
      "27 Kodak_M1063_0_9555_Rollei_RCP-7325XS_0_42220_1540045515_3072_2304.csv\n",
      "0.7997159090909091 0.9059270516717325\n",
      "28 Agfa_Sensor505-x_0_1858_Kodak_M1063_0_9559_1540017078_3664_2748.csv\n",
      "0.989010989010989 0.9970955249569707\n",
      "29 Kodak_M1063_0_9557_Rollei_RCP-7325XS_0_42307_1540046132_3072_2304.csv\n",
      "0.7472527472527473 0.8820668693009118\n",
      "30 Nikon_D200_0_15022_Kodak_M1063_0_9542_1540040705_3664_2748.csv\n",
      "0.9751461988304093 0.9891351118760757\n",
      "31 Sony_DSC-H50_0_47027_Rollei_RCP-7325XS_0_42204_1540042717_3072_2304.csv\n",
      "0.9705882352941176 0.9861702127659574\n",
      "32 Rollei_RCP-7325XS_0_42252_Sony_DSC-H50_0_46996_1540023728_3456_2592.csv\n",
      "1.0 0.989849534272749\n",
      "33 Nikon_D200_0_15022_Rollei_RCP-7325XS_0_42205_1540022231_3072_2304.csv\n",
      "0.6833333333333333 0.847872340425532\n",
      "34 Rollei_RCP-7325XS_0_42375_Sony_DSC-H50_0_47024_1540034598_3456_2592.csv\n",
      "0.8271604938271605 0.9168855982803917\n",
      "35 Sony_DSC-H50_0_47032_Agfa_Sensor505-x_0_1673_1540036483_2592_1944.csv\n",
      "0.9546666666666667 0.9893059799214317\n",
      "36 Agfa_Sensor505-x_0_1633_Kodak_M1063_0_9407_1540013622_3664_2748.csv\n",
      "1.0 0.9931153184165232\n",
      "37 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42205_1540023030_3072_2304.csv\n",
      "0.8442249240121581 0.8442249240121581\n",
      "38 Sony_DSC-H50_0_47413_Rollei_RCP-7325XS_0_42273_1540043864_3072_2304.csv\n",
      "0.9476190476190476 0.9677811550151976\n",
      "39 Kodak_M1063_0_9579_Rollei_RCP-7325XS_0_42204_1540046936_3072_2304.csv\n",
      "0.7625 0.8487841945288754\n",
      "40 Sony_DSC-H50_0_47408_Agfa_Sensor505-x_0_1683_1540036634_2592_1944.csv\n",
      "0.704 0.8513749454386731\n",
      "41 Sony_DSC-H50_0_46951_Rollei_RCP-7325XS_0_42214_1540042635_3072_2304.csv\n",
      "1.0 0.9904255319148936\n",
      "42 Nikon_D200_0_15026_Kodak_M1063_0_9489_1540040235_3664_2748.csv\n",
      "0.9259259259259259 0.9771944922547332\n",
      "43 Sony_DSC-H50_0_46951_Agfa_Sensor505-x_0_1783_1540036871_2592_1944.csv\n",
      "0.9888888888888889 0.9788302051505893\n",
      "44 Nikon_D200_0_15026_Kodak_M1063_0_9537_1540040673_3664_2748.csv\n",
      "1.0 0.987736660929432\n",
      "45 Kodak_M1063_0_9457_Nikon_D200_0_15008_1540019238_3872_2592.csv\n",
      "0.9949494949494949 0.9955323901712584\n",
      "46 Rollei_RCP-7325XS_0_42337_Sony_DSC-H50_0_46927_1540023540_3456_2592.csv\n",
      "0.8894308943089431 0.9080487222354908\n",
      "47 Kodak_M1063_0_9457_Rollei_RCP-7325XS_0_42205_1540044773_3072_2304.csv\n",
      "0.6363636363636364 0.8344984802431611\n",
      "48 Nikon_D200_0_15026_Kodak_M1063_0_9531_1540040497_3664_2748.csv\n",
      "0.980246913580247 0.9901032702237521\n",
      "49 Sony_DSC-H50_0_47027_Agfa_Sensor505-x_0_1876_1540036364_2592_1944.csv\n",
      "0.9461538461538461 0.9642077695329551\n",
      "50 Kodak_M1063_0_9367_Rollei_RCP-7325XS_0_42204_1540044982_3072_2304.csv\n",
      "0.9903288201160542 0.9905775075987842\n",
      "51 Kodak_M1063_0_9523_Nikon_D200_0_15012_1540128751_3872_2592.csv\n",
      "0.7497789566755084 0.9076693968726731\n",
      "52 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42220_1540022871_3072_2304.csv\n",
      "1.0 0.9720364741641337\n",
      "53 Kodak_M1063_0_9474_Nikon_D200_0_14960_1540018011_3872_2592.csv\n",
      "0.8109243697478992 0.9892564620785023\n",
      "54 Nikon_D200_0_15137_Rollei_RCP-7325XS_0_42205_1540023237_3072_2304.csv\n",
      "0.9435185185185185 0.9366261398176292\n",
      "55 Nikon_D200_0_15137_Rollei_RCP-7325XS_0_42222_1540023120_3072_2304.csv\n",
      "1.0 0.9867781155015197\n",
      "56 Nikon_D200_0_15026_Kodak_M1063_0_9532_1540040266_3664_2748.csv\n",
      "0.7724358974358975 0.9371772805507745\n",
      "57 Agfa_Sensor505-x_0_1783_Kodak_M1063_0_9393_1540014425_3664_2748.csv\n",
      "0.7238095238095238 0.8157271944922547\n",
      "58 Agfa_Sensor505-x_0_1633_Kodak_M1063_0_9367_1540014001_3664_2748.csv\n",
      "0.9791666666666666 0.9948364888123924\n",
      "59 Kodak_M1063_0_9457_Nikon_D200_0_14952_1540018721_3872_2592.csv\n",
      "0.7256410256410256 0.9170301031805127\n",
      "60 Sony_DSC-H50_0_46951_Rollei_RCP-7325XS_0_42215_1540042469_3072_2304.csv\n",
      "0.9278846153846154 0.9814589665653496\n",
      "61 Kodak_M1063_0_9557_Nikon_D200_0_15072_1540019350_3872_2592.csv\n",
      "0.7559523809523809 0.9400063822997553\n",
      "62 Sony_DSC-H50_0_47027_Agfa_Sensor505-x_0_1628_1540036420_2592_1944.csv\n",
      "0.9830508474576272 0.9803579223046704\n",
      "63 Nikon_D200_0_15026_Kodak_M1063_0_9571_1540040736_3664_2748.csv\n",
      "0.9387019230769231 0.9700946643717728\n",
      "64 Nikon_D200_0_15026_Kodak_M1063_0_9538_1540040681_3664_2748.csv\n",
      "1.0 0.9921471600688468\n",
      "65 Kodak_M1063_0_9457_Nikon_D200_0_15008_1540018767_3872_2592.csv\n",
      "0.7714932126696833 0.951920008509733\n",
      "66 Agfa_Sensor505-x_0_1629_Kodak_M1063_0_9393_1540016753_3664_2748.csv\n",
      "0.66 0.8175559380378657\n",
      "67 Kodak_M1063_0_9457_Rollei_RCP-7325XS_0_42208_1540045861_3072_2304.csv\n",
      "1.0 0.8720364741641338\n",
      "68 Nikon_D200_0_15026_Kodak_M1063_0_9525_1540040848_3664_2748.csv\n",
      "0.9807692307692307 0.9922547332185886\n",
      "69 Rollei_RCP-7325XS_0_42337_Sony_DSC-H50_0_47021_1540034577_3456_2592.csv\n",
      "0.9583333333333334 0.9773107236684977\n",
      "70 Agfa_Sensor505-x_0_1633_Kodak_M1063_0_9409_1540016770_3664_2748.csv\n",
      "1.0 0.9930077452667814\n",
      "71 Kodak_M1063_0_9583_Rollei_RCP-7325XS_0_42323_1540046188_3072_2304.csv\n",
      "1.0 0.9934650455927052\n",
      "72 Sony_DSC-H50_0_46951_Rollei_RCP-7325XS_0_42215_1540042646_3072_2304.csv\n",
      "0.9529780564263323 0.9899696048632218\n",
      "73 Kodak_M1063_0_9490_Nikon_D200_0_14984_1540018088_3872_2592.csv\n",
      "0.7006578947368421 0.9663865546218487\n",
      "74 Sony_DSC-H50_0_46951_Rollei_RCP-7325XS_0_42205_1540042595_3072_2304.csv\n",
      "0.7142857142857143 0.894224924012158\n",
      "75 Nikon_D200_0_15026_Kodak_M1063_0_9525_1540040626_3664_2748.csv\n",
      "0.8805555555555555 0.9670826161790017\n",
      "76 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42220_1540022506_3072_2304.csv\n",
      "0.7547826086956522 0.9156534954407295\n",
      "77 Rollei_RCP-7325XS_0_42376_Sony_DSC-H50_0_46949_1540023584_3456_2592.csv\n",
      "0.8095238095238095 0.9054215428707906\n",
      "78 Sony_DSC-H50_0_47035_Rollei_RCP-7325XS_0_42276_1540042395_3072_2304.csv\n",
      "1.0 0.9838905775075988\n",
      "79 Kodak_M1063_0_9457_Rollei_RCP-7325XS_0_42216_1540045915_3072_2304.csv\n",
      "1.0 0.9095744680851063\n",
      "80 Sony_DSC-H50_0_47009_Agfa_Sensor505-x_0_1628_1540035138_2592_1944.csv\n",
      "0.9923076923076923 0.9927979048450458\n",
      "81 Kodak_M1063_0_9579_Rollei_RCP-7325XS_0_42203_1540046951_3072_2304.csv\n",
      "0.7217194570135747 0.8547112462006079\n",
      "82 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42307_1540022935_3072_2304.csv\n",
      "0.9181547619047619 0.9699088145896656\n",
      "83 Sony_DSC-H50_0_47030_Agfa_Sensor505-x_0_1673_1540035299_2592_1944.csv\n",
      "0.9382440476190477 0.934308162374509\n",
      "84 Agfa_Sensor505-x_0_1859_Kodak_M1063_0_9555_1540017061_3664_2748.csv\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.0 0.9983864027538726\n",
      "85 Sony_DSC-H50_0_46951_Agfa_Sensor505-x_0_1627_1540124824_2592_1944.csv\n",
      "1.0 0.9738105630728939\n",
      "86 Kodak_M1063_0_9583_Rollei_RCP-7325XS_0_42322_1540046173_3072_2304.csv\n",
      "0.9744897959183674 0.9911854103343465\n",
      "87 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42204_1540022792_3072_2304.csv\n",
      "0.8907692307692308 0.9591185410334346\n",
      "88 Rollei_RCP-7325XS_0_42376_Sony_DSC-H50_0_47027_1540034607_3456_2592.csv\n",
      "0.8946886446886447 0.9460234057797946\n",
      "89 Nikon_D200_0_15022_Kodak_M1063_0_9406_1540040371_3664_2748.csv\n",
      "0.988988988988989 0.9915017211703959\n",
      "90 Rollei_RCP-7325XS_0_42252_Sony_DSC-H50_0_46912_1540027990_3456_2592.csv\n",
      "0.735632183908046 0.9353952710771435\n",
      "91 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42219_1540022859_3072_2304.csv\n",
      "0.8792270531400966 0.958966565349544\n",
      "92 Nikon_D200_0_15022_Rollei_RCP-7325XS_0_42218_1540023080_3072_2304.csv\n",
      "1.0 0.981306990881459\n",
      "93 Sony_DSC-H50_0_47027_Agfa_Sensor505-x_0_1629_1540035488_2592_1944.csv\n",
      "0.9545454545454546 0.9770842426887822\n",
      "94 Kodak_M1063_0_9559_Rollei_RCP-7325XS_0_42216_1540046441_3072_2304.csv\n",
      "0.78125 0.9515197568389058\n",
      "95 Sony_DSC-H50_0_47004_Agfa_Sensor505-x_0_1830_1540036334_2592_1944.csv\n",
      "0.9929824561403509 0.9799214316892186\n",
      "96 Kodak_M1063_0_9457_Rollei_RCP-7325XS_0_42218_1540045930_3072_2304.csv\n",
      "0.6813333333333333 0.8820668693009118\n",
      "97 Agfa_Sensor505-x_0_1633_Kodak_M1063_0_9385_1540014381_2748_3664.csv\n",
      "1.0 0.9978485370051635\n",
      "98 Sony_DSC-H50_0_47035_Agfa_Sensor505-x_0_1675_1540036593_2592_1944.csv\n",
      "1.0 0.9899607158446093\n",
      "99 Kodak_M1063_0_9596_Rollei_RCP-7325XS_0_42314_1540046646_3072_2304.csv\n",
      "1.0 0.929483282674772\n",
      "100 Sony_DSC-H50_0_46953_Rollei_RCP-7325XS_0_42314_1540043952_3072_2304.csv\n",
      "1.0 0.8737082066869301\n",
      "101 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42220_1540022267_3072_2304.csv\n",
      "0.9298245614035088 0.9756838905775076\n",
      "102 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42306_1540022339_3072_2304.csv\n",
      "0.9922839506172839 0.9952887537993921\n",
      "103 Sony_DSC-H50_0_46953_Agfa_Sensor505-x_0_1628_1540037231_2592_1944.csv\n",
      "0.7534013605442177 0.8862941946748145\n",
      "104 Kodak_M1063_0_9457_Rollei_RCP-7325XS_0_42219_1540045947_3072_2304.csv\n",
      "0.75 0.9311550151975684\n",
      "105 Kodak_M1063_0_9367_Nikon_D200_0_14934_1540018447_3872_2592.csv\n",
      "0.8548387096774194 0.9625571747686417\n",
      "106 Kodak_M1063_0_9367_Nikon_D200_0_14906_1540018426_3872_2592.csv\n",
      "0.746606334841629 0.9277736411020104\n",
      "107 Nikon_D200_0_14908_Kodak_M1063_0_9395_1540038181_3664_2748.csv\n",
      "0.9933333333333333 0.9950516351118761\n",
      "108 Nikon_D200_0_15026_Kodak_M1063_0_9529_1540040489_3664_2748.csv\n",
      "1.0 0.9732142857142857\n",
      "109 Agfa_Sensor505-x_0_1820_Kodak_M1063_0_9457_1540016920_2748_3664.csv\n",
      "0.9945054945054945 0.9955895008605852\n",
      "110 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42203_1540023000_3072_2304.csv\n",
      "0.9841269841269841 0.9908814589665653\n",
      "111 Agfa_Sensor505-x_0_1620_Kodak_M1063_0_9531_1540013851_3664_2748.csv\n",
      "1.0 0.9983864027538726\n",
      "112 Agfa_Sensor505-x_0_1859_Kodak_M1063_0_9583_1540017096_3664_2748.csv\n",
      "0.9696969696969697 0.9901032702237521\n",
      "113 Sony_DSC-H50_0_47002_Agfa_Sensor505-x_0_1627_1540035024_2592_1944.csv\n",
      "0.9836065573770492 0.9912701876909646\n",
      "114 Nikon_D200_0_15026_Kodak_M1063_0_9470_1540040429_3664_2748.csv\n",
      "0.93 0.9725688468158348\n",
      "115 Agfa_Sensor505-x_0_1821_Kodak_M1063_0_9476_1540014540_3664_2748.csv\n",
      "1.0 0.9936531841652324\n",
      "116 Sony_DSC-H50_0_46953_Agfa_Sensor505-x_0_1788_1540036890_2592_1944.csv\n",
      "0.6804733727810651 0.8489742470536883\n",
      "117 Rollei_RCP-7325XS_0_42359_Sony_DSC-H50_0_47004_1540034825_3456_2592.csv\n",
      "0.975 0.9859087652256986\n",
      "118 Agfa_Sensor505-x_0_1800_Kodak_M1063_0_9470_1540016569_3664_2748.csv\n",
      "0.9263157894736842 0.9756884681583476\n",
      "119 Nikon_D200_0_15050_Rollei_RCP-7325XS_0_42316_1540022354_3072_2304.csv\n",
      "0.9829545454545454 0.9965045592705167\n",
      "120 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42222_1540022516_3072_2304.csv\n",
      "1.0 0.9151975683890577\n",
      "121 Sony_DSC-H50_0_46953_Agfa_Sensor505-x_0_1629_1540037015_2592_1944.csv\n",
      "0.7075098814229249 0.885202968136185\n",
      "122 Kodak_M1063_0_9559_Nikon_D200_0_15074_1540019364_3872_2592.csv\n",
      "1.0 0.9970215934475056\n",
      "123 Rollei_RCP-7325XS_0_42267_Sony_DSC-H50_0_47004_1540033882_3456_2592.csv\n",
      "0.9468531468531468 0.9115118223071411\n",
      "124 Sony_DSC-H50_0_47027_Agfa_Sensor505-x_0_1674_1540035525_2592_1944.csv\n",
      "0.967032967032967 0.9814491488432999\n",
      "125 Rollei_RCP-7325XS_0_42364_Sony_DSC-H50_0_47021_1540034122_3456_2592.csv\n",
      "0.798941798941799 0.9550991163123955\n",
      "126 Nikon_D200_0_15137_Rollei_RCP-7325XS_0_42316_1540023344_3072_2304.csv\n",
      "0.9574780058651027 0.9820668693009118\n",
      "127 Agfa_Sensor505-x_0_1633_Kodak_M1063_0_9407_1540013637_3664_2748.csv\n",
      "0.9829059829059829 0.9982788296041308\n",
      "128 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42218_1540022255_3072_2304.csv\n",
      "0.8846153846153846 0.964741641337386\n",
      "129 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42216_1540023068_3072_2304.csv\n",
      "0.9888888888888889 0.9951367781155015\n",
      "130 Nikon_D200_0_15026_Kodak_M1063_0_9531_1540040257_3664_2748.csv\n",
      "0.8806366047745358 0.965684165232358\n",
      "131 Sony_DSC-H50_0_46953_Rollei_RCP-7325XS_0_42207_1540042602_3072_2304.csv\n",
      "1.0 0.8767477203647417\n",
      "132 Sony_DSC-H50_0_46951_Rollei_RCP-7325XS_0_42205_1540042451_3072_2304.csv\n",
      "0.6724137931034483 0.8694528875379939\n",
      "133 Nikon_D200_0_15026_Kodak_M1063_0_9410_1540040401_3664_2748.csv\n",
      "1.0 0.979776247848537\n",
      "134 Kodak_M1063_0_9457_Rollei_RCP-7325XS_0_42207_1540044788_3072_2304.csv\n",
      "1.0 0.9095744680851063\n",
      "135 Nikon_D200_0_15026_Kodak_M1063_0_9546_1540040906_3664_2748.csv\n",
      "0.9838709677419355 0.9908562822719449\n",
      "136 Nikon_D200_0_14908_Kodak_M1063_0_9491_1540040794_3664_2748.csv\n",
      "0.998062015503876 0.9897805507745266\n",
      "137 Kodak_M1063_0_9583_Rollei_RCP-7325XS_0_42306_1540045721_3072_2304.csv\n",
      "0.7185185185185186 0.9170212765957447\n",
      "138 Sony_DSC-H50_0_47693_Agfa_Sensor505-x_0_1702_1540036689_2592_1944.csv\n",
      "0.9111111111111111 0.9975993016150153\n",
      "139 Agfa_Sensor505-x_0_1826_Kodak_M1063_0_9476_1540016976_3664_2748.csv\n",
      "1.0 0.985907917383821\n",
      "140 Agfa_Sensor505-x_0_1667_Kodak_M1063_0_9409_1540013657_3664_2748.csv\n",
      "0.9734848484848485 0.9927925989672978\n",
      "141 Sony_DSC-H50_0_46951_Rollei_RCP-7325XS_0_42204_1540042444_3072_2304.csv\n",
      "0.9751861042183623 0.9855623100303952\n",
      "142 Nikon_D200_0_15026_Kodak_M1063_0_9531_1540040642_3664_2748.csv\n",
      "0.9865591397849462 0.9965576592082617\n",
      "143 Sony_DSC-H50_0_46951_Rollei_RCP-7325XS_0_42306_1540043924_3072_2304.csv\n",
      "0.9505494505494505 0.9727963525835867\n",
      "144 Nikon_D200_0_15022_Rollei_RCP-7325XS_0_42219_1540022498_3072_2304.csv\n",
      "0.9907407407407407 0.9907294832826747\n",
      "145 Sony_DSC-H50_0_46908_Agfa_Sensor505-x_0_1681_1540037138_2592_1944.csv\n",
      "0.9490740740740741 0.9805761676123963\n",
      "146 Rollei_RCP-7325XS_0_42364_Sony_DSC-H50_0_46946_1540028084_3456_2592.csv\n",
      "0.9724310776942355 0.989491282541199\n",
      "147 Kodak_M1063_0_9457_Nikon_D200_0_15074_1540106718_3872_2592.csv\n",
      "1.0 0.8716094032549728\n",
      "148 Nikon_D200_0_15135_Rollei_RCP-7325XS_0_42262_1540023296_3072_2304.csv\n",
      "0.9775641025641025 0.9913373860182371\n",
      "149 Sony_DSC-H50_0_46951_Rollei_RCP-7325XS_0_42218_1540042485_3072_2304.csv\n",
      "0.9602977667493796 0.9639817629179331\n",
      "150 Kodak_M1063_0_9367_Nikon_D200_0_14906_1540018638_3872_2592.csv\n",
      "0.7837837837837838 0.9277736411020104\n",
      "151 Sony_DSC-H50_0_47027_Agfa_Sensor505-x_0_1675_1540035562_2592_1944.csv\n",
      "0.9841897233201581 0.9956350938454823\n",
      "152 Nikon_D200_0_15026_Kodak_M1063_0_9532_1540040503_3664_2748.csv\n",
      "0.9842857142857143 0.9941910499139415\n",
      "153 Agfa_Sensor505-x_0_1811_Kodak_M1063_0_9457_1540017739_2748_3664.csv\n",
      "0.88 0.9989242685025818\n",
      "154 Nikon_D200_0_14902_Kodak_M1063_0_9393_1540038166_3664_2748.csv\n",
      "0.7933333333333333 0.8524096385542169\n",
      "155 Kodak_M1063_0_9583_Rollei_RCP-7325XS_0_42204_1540046915_3072_2304.csv\n",
      "0.9741379310344828 0.9925531914893617\n",
      "156 Agfa_Sensor505-x_0_1796_Kodak_M1063_0_9407_1540014147_3664_2748.csv\n",
      "1.0 0.9976333907056799\n",
      "157 Nikon_D200_0_14902_Rollei_RCP-7325XS_0_42185_1540022146_3072_2304.csv\n",
      "0.9960474308300395 0.9951367781155015\n",
      "158 Agfa_Sensor505-x_0_1800_Kodak_M1063_0_9409_1540014488_3664_2748.csv\n",
      "0.9202898550724637 0.9850473321858864\n",
      "159 Nikon_D200_0_15026_Kodak_M1063_0_9555_1540040716_3664_2748.csv\n",
      "0.9826086956521739 0.9939759036144579\n",
      "160 Kodak_M1063_0_9489_Nikon_D200_0_14908_1540128707_3872_2592.csv\n",
      "0.7288359788359788 0.8887352409318158\n",
      "161 Kodak_M1063_0_9367_Nikon_D200_0_14902_1540018974_3872_2592.csv\n",
      "0.8189189189189189 0.9510690352090203\n",
      "162 Sony_DSC-H50_0_47035_Agfa_Sensor505-x_0_1684_1540035675_2592_1944.csv\n",
      "0.9688888888888889 0.9919249236141423\n",
      "163 Rollei_RCP-7325XS_0_42250_Sony_DSC-H50_0_46972_1540028163_3456_2592.csv\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9386363636363636 0.9721757821829472\n",
      "164 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42219_1540023093_3072_2304.csv\n",
      "0.9010989010989011 0.9703647416413373\n",
      "165 Rollei_RCP-7325XS_0_42337_Sony_DSC-H50_0_47030_1540028261_3456_2592.csv\n",
      "0.9172413793103448 0.969548602818247\n",
      "166 Sony_DSC-H50_0_47032_Agfa_Sensor505-x_0_1796_1534065258_2592_1944.csv\n",
      "1.0 0.9934526407682235\n",
      "167 Kodak_M1063_0_9457_Nikon_D200_0_15072_1540106710_3872_2592.csv\n",
      "0.9730603448275862 0.9911711520051059\n",
      "168 Sony_DSC-H50_0_47027_Agfa_Sensor505-x_0_1633_1540035263_2592_1944.csv\n",
      "0.984375 0.9873417721518988\n",
      "169 Agfa_Sensor505-x_0_1783_Kodak_M1063_0_9409_1540017720_3664_2748.csv\n",
      "0.9777777777777777 0.9972030981067126\n",
      "170 Rollei_RCP-7325XS_0_42252_Sony_DSC-H50_0_46996_1540028177_3456_2592.csv\n",
      "1.0 0.9226176259851923\n",
      "171 Kodak_M1063_0_9555_Nikon_D200_0_15074_1540018364_3872_2592.csv\n",
      "0.796875 0.9808531007339645\n",
      "172 Sony_DSC-H50_0_47009_Rollei_RCP-7325XS_0_42216_1540044405_3072_2304.csv\n",
      "0.9704545454545455 0.9965045592705167\n",
      "173 Sony_DSC-H50_0_46951_Agfa_Sensor505-x_0_1629_1540037246_2592_1944.csv\n",
      "0.9222222222222223 0.9751200349192493\n",
      "174 Sony_DSC-H50_0_47031_Agfa_Sensor505-x_0_1629_1540036457_2592_1944.csv\n",
      "0.9647058823529412 0.9897424705368835\n",
      "175 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42273_1540022323_3072_2304.csv\n",
      "0.95 0.973404255319149\n",
      "176 Agfa_Sensor505-x_0_1862_Kodak_M1063_0_9542_1540014306_3664_2748.csv\n",
      "1.0 0.9991394148020654\n",
      "177 Nikon_D200_0_15137_Rollei_RCP-7325XS_0_42236_1540023138_3072_2304.csv\n",
      "0.9480249480249481 0.9810030395136778\n",
      "178 Rollei_RCP-7325XS_0_42250_Sony_DSC-H50_0_46972_1540023710_3456_2592.csv\n",
      "0.903125 0.9808932409839981\n",
      "179 Kodak_M1063_0_9406_Nikon_D200_0_15008_1540018510_3872_2592.csv\n",
      "0.9915966386554622 0.99765982342304\n",
      "180 Sony_DSC-H50_0_47027_Rollei_RCP-7325XS_0_42208_1540042255_3072_2304.csv\n",
      "1.0 0.9861702127659574\n",
      "181 Kodak_M1063_0_9457_Rollei_RCP-7325XS_0_42204_1540045838_3072_2304.csv\n",
      "0.7347480106100795 0.8993920972644377\n",
      "182 Sony_DSC-H50_0_47413_Rollei_RCP-7325XS_0_42218_1540044497_3072_2304.csv\n",
      "0.9410377358490566 0.9753799392097264\n",
      "183 Agfa_Sensor505-x_0_1783_Kodak_M1063_0_9468_1540016550_3664_2748.csv\n",
      "0.8809523809523809 0.9581540447504303\n",
      "184 Sony_DSC-H50_0_46951_Rollei_RCP-7325XS_0_42204_1540042586_3072_2304.csv\n",
      "0.9111111111111111 0.9630699088145896\n",
      "185 Kodak_M1063_0_9457_Nikon_D200_0_14908_1540041581_3872_2592.csv\n",
      "0.6180555555555556 0.8780980746729071\n",
      "186 Sony_DSC-H50_0_46953_Rollei_RCP-7325XS_0_42208_1540042608_3072_2304.csv\n",
      "1.0 0.8998480243161094\n",
      "187 Nikon_D200_0_15026_Kodak_M1063_0_9534_1540040882_3664_2748.csv\n",
      "0.9883870967741936 0.993868330464716\n",
      "188 Nikon_D200_0_15026_Kodak_M1063_0_9407_1540040381_3664_2748.csv\n",
      "0.8151724137931035 0.9363166953528399\n",
      "189 Nikon_D200_0_15026_Kodak_M1063_0_9534_1540040662_3664_2748.csv\n",
      "0.9238505747126436 0.9807444061962134\n",
      "190 Kodak_M1063_0_9457_Rollei_RCP-7325XS_0_42219_1540044857_3072_2304.csv\n",
      "0.7411347517730497 0.869756838905775\n",
      "191 Kodak_M1063_0_9403_Nikon_D200_0_15006_1540018496_3872_2592.csv\n",
      "0.9555555555555556 0.9950005318583129\n",
      "192 Sony_DSC-H50_0_46953_Rollei_RCP-7325XS_0_42316_1540043961_3072_2304.csv\n",
      "0.7614814814814815 0.910790273556231\n",
      "193 Sony_DSC-H50_0_47447_Agfa_Sensor505-x_0_1708_1540036820_2592_1944.csv\n",
      "1.0 0.9921431689218682\n",
      "194 Rollei_RCP-7325XS_0_42375_Sony_DSC-H50_0_47009_1540034857_3456_2592.csv\n",
      "0.9447619047619048 0.9564127059947456\n",
      "195 Nikon_D200_0_15026_Kodak_M1063_0_9543_1540040899_3664_2748.csv\n",
      "0.6164874551971327 0.8391781411359724\n",
      "196 Kodak_M1063_0_9583_Rollei_RCP-7325XS_0_42220_1540046501_3072_2304.csv\n",
      "1.0 0.9153495440729483\n",
      "197 Sony_DSC-H50_0_46951_Rollei_RCP-7325XS_0_42208_1540044299_3072_2304.csv\n",
      "1.0 0.9800911854103344\n",
      "198 Kodak_M1063_0_9367_Nikon_D200_0_14902_1540019762_3872_2592.csv\n",
      "0.9239766081871345 0.9902138070418041\n",
      "199 Kodak_M1063_0_9457_Rollei_RCP-7325XS_0_42220_1540046000_3072_2304.csv\n",
      "1.0 0.8566869300911855\n",
      "200 Nikon_D200_0_15026_Kodak_M1063_0_9534_1540040275_3664_2748.csv\n",
      "0.9814814814814815 0.9927925989672978\n",
      "201 Sony_DSC-H50_0_47035_Agfa_Sensor505-x_0_1674_1540037083_2592_1944.csv\n",
      "0.9888888888888889 0.9927979048450458\n",
      "202 Kodak_M1063_0_9457_Rollei_RCP-7325XS_0_42208_1540044803_3072_2304.csv\n",
      "1.0 0.8908814589665653\n",
      "203 Agfa_Sensor505-x_0_1702_Kodak_M1063_0_9393_1540014113_3664_2748.csv\n",
      "0.7142857142857143 0.8216437177280551\n",
      "204 Sony_DSC-H50_0_47027_Rollei_RCP-7325XS_0_42220_1540042288_3072_2304.csv\n",
      "1.0 0.9896656534954408\n",
      "205 Sony_DSC-H50_0_46951_Rollei_RCP-7325XS_0_42240_1540042533_3072_2304.csv\n",
      "0.9727047146401985 0.9799392097264438\n",
      "206 Agfa_Sensor505-x_0_1695_Kodak_M1063_0_9406_1540016503_3664_2748.csv\n",
      "0.9761904761904762 0.9955895008605852\n",
      "207 Nikon_D200_0_15022_Rollei_RCP-7325XS_0_42204_1540023016_3072_2304.csv\n",
      "0.9805743243243243 0.9878419452887538\n",
      "208 Kodak_M1063_0_9579_Nikon_D200_0_14902_1540107165_3872_2592.csv\n",
      "1.0 0.9936177002446548\n",
      "209 Sony_DSC-H50_0_47035_Rollei_RCP-7325XS_0_42205_1540042732_3072_2304.csv\n",
      "0.728 0.8699088145896656\n",
      "210 Agfa_Sensor505-x_0_1783_Kodak_M1063_0_9406_1540014137_3664_2748.csv\n",
      "0.989010989010989 0.9973106712564543\n",
      "211 Kodak_M1063_0_9557_Rollei_RCP-7325XS_0_42306_1540046113_3072_2304.csv\n",
      "0.7096774193548387 0.8791793313069909\n",
      "212 Kodak_M1063_0_9583_Rollei_RCP-7325XS_0_42273_1540045639_3072_2304.csv\n",
      "0.6981481481481482 0.898936170212766\n",
      "213 Rollei_RCP-7325XS_0_42252_Sony_DSC-H50_0_46972_1540033807_3456_2592.csv\n",
      "0.9603174603174603 0.9728922856460472\n",
      "214 Kodak_M1063_0_9457_Nikon_D200_0_14932_1540017940_3872_2592.csv\n",
      "0.9973958333333334 0.9972343367726838\n",
      "215 Kodak_M1063_0_9564_Nikon_D200_0_15062_1540018913_3872_2592.csv\n",
      "0.7171717171717171 0.9708541644505904\n",
      "216 Rollei_RCP-7325XS_0_42267_Sony_DSC-H50_0_47002_1540033845_3456_2592.csv\n",
      "0.85 0.919751612132792\n",
      "217 Rollei_RCP-7325XS_0_42337_Sony_DSC-H50_0_47009_1540034014_3456_2592.csv\n",
      "0.9402298850574713 0.9673990924289467\n",
      "218 Kodak_M1063_0_9367_Rollei_RCP-7325XS_0_42203_1540044720_3072_2304.csv\n",
      "0.8319148936170213 0.9182370820668693\n",
      "219 Kodak_M1063_0_9375_Nikon_D200_0_14908_1540019187_3872_2592.csv\n",
      "0.6032 0.9110732900755238\n",
      "220 Rollei_RCP-7325XS_0_42337_Sony_DSC-H50_0_47012_1540034025_3456_2592.csv\n",
      "0.9655172413793104 0.9826844996417483\n",
      "221 Agfa_Sensor505-x_0_1857_Kodak_M1063_0_9409_1540128878_3664_2748.csv\n",
      "0.9790209790209791 0.9944061962134251\n",
      "222 Nikon_D200_0_15026_Kodak_M1063_0_9538_1540040290_3664_2748.csv\n",
      "1.0 0.9793459552495697\n",
      "223 Nikon_D200_0_14908_Rollei_RCP-7325XS_0_42194_1540022159_3072_2304.csv\n",
      "0.9782608695652174 0.993920972644377\n",
      "224 Kodak_M1063_0_9457_Rollei_RCP-7325XS_0_42216_1540045419_3072_2304.csv\n",
      "1.0 0.8610942249240121\n",
      "225 Rollei_RCP-7325XS_0_42252_Sony_DSC-H50_0_47004_1540028207_3456_2592.csv\n",
      "0.9927404718693285 0.9941485550513495\n",
      "226 Rollei_RCP-7325XS_0_42337_Sony_DSC-H50_0_47004_1540034541_3456_2592.csv\n",
      "0.8614540466392319 0.9008836876044901\n",
      "227 Kodak_M1063_0_9555_Nikon_D200_0_15038_1540018863_3872_2592.csv\n",
      "0.9912280701754386 0.9979789384108073\n",
      "228 Rollei_RCP-7325XS_0_42207_Sony_DSC-H50_0_47027_1540034204_3456_2592.csv\n",
      "0.8473748473748474 0.9146166706472415\n",
      "229 Sony_DSC-H50_0_46951_Rollei_RCP-7325XS_0_42207_1540044278_3072_2304.csv\n",
      "1.0 0.9822188449848024\n",
      "230 Rollei_RCP-7325XS_0_42376_Sony_DSC-H50_0_46951_1540023593_3456_2592.csv\n",
      "0.8841991341991342 0.9468593264867446\n",
      "231 Sony_DSC-H50_0_46951_Rollei_RCP-7325XS_0_42218_1540042801_3072_2304.csv\n",
      "0.9220430107526881 0.9653495440729484\n",
      "232 Sony_DSC-H50_0_46951_Rollei_RCP-7325XS_0_42194_1540042432_3072_2304.csv\n",
      "0.9944444444444445 0.9884498480243161\n",
      "233 Kodak_M1063_0_9583_Rollei_RCP-7325XS_0_42222_1540045607_3072_2304.csv\n",
      "1.0 0.9907294832826747\n",
      "234 Kodak_M1063_0_9457_Rollei_RCP-7325XS_0_42222_1540044893_3072_2304.csv\n",
      "1.0 0.9300911854103343\n",
      "235 Nikon_D200_0_15137_Rollei_RCP-7325XS_0_42203_1540023220_3072_2304.csv\n",
      "0.967391304347826 0.9846504559270517\n",
      "236 Agfa_Sensor505-x_0_1667_Kodak_M1063_0_9557_1540013920_3664_2748.csv\n",
      "1.0 0.9949440619621343\n",
      "237 Kodak_M1063_0_9583_Rollei_RCP-7325XS_0_42314_1540045741_3072_2304.csv\n",
      "1.0 0.9199088145896657\n",
      "238 Kodak_M1063_0_9583_Rollei_RCP-7325XS_0_42319_1540045760_3072_2304.csv\n",
      "0.7967332123411979 0.9135258358662613\n",
      "239 Kodak_M1063_0_9473_Nikon_D200_0_14934_1540017981_3872_2592.csv\n",
      "0.8293269230769231 0.9733007126901394\n",
      "240 Nikon_D200_0_15022_Rollei_RCP-7325XS_0_42203_1540022776_3072_2304.csv\n",
      "0.950950950950951 0.9709726443768997\n",
      "241 Rollei_RCP-7325XS_0_42337_Sony_DSC-H50_0_47018_1540034061_3456_2592.csv\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9251152073732719 0.9721757821829472\n",
      "242 Kodak_M1063_0_9585_Rollei_RCP-7325XS_0_42307_1540046614_3072_2304.csv\n",
      "0.9871794871794872 0.997872340425532\n",
      "243 Kodak_M1063_0_9579_Rollei_RCP-7325XS_0_42204_1540046979_3072_2304.csv\n",
      "0.9893333333333333 0.9908814589665653\n",
      "244 Nikon_D200_0_14908_Kodak_M1063_0_9407_1540038210_3664_2748.csv\n",
      "0.9981060606060606 0.9939759036144579\n",
      "245 Agfa_Sensor505-x_0_1633_Kodak_M1063_0_9555_1540013896_3664_2748.csv\n",
      "0.9914529914529915 0.9984939759036144\n",
      "246 Sony_DSC-H50_0_46951_Rollei_RCP-7325XS_0_42307_1540043940_3072_2304.csv\n",
      "0.9602977667493796 0.9653495440729484\n",
      "247 Sony_DSC-H50_0_47027_Agfa_Sensor505-x_0_1921_1540036400_2592_1944.csv\n",
      "0.9927536231884058 0.9842863378437363\n",
      "248 Nikon_D200_0_15026_Kodak_M1063_0_9409_1540040194_3664_2748.csv\n",
      "0.9125 0.9785929432013769\n",
      "249 Sony_DSC-H50_0_47004_Agfa_Sensor505-x_0_1673_1540037066_2592_1944.csv\n",
      "0.9649122807017544 0.9803579223046704\n",
      "250 Nikon_D200_0_15022_Rollei_RCP-7325XS_0_42194_1540022988_3072_2304.csv\n",
      "0.8505114083398898 0.9193009118541033\n",
      "251 Sony_DSC-H50_0_46954_Agfa_Sensor505-x_0_1632_1540037028_2592_1944.csv\n",
      "1.0 0.9310344827586207\n",
      "252 Nikon_D200_0_15050_Rollei_RCP-7325XS_0_42205_1540022818_3072_2304.csv\n",
      "0.6822916666666666 0.8708206686930091\n",
      "253 Agfa_Sensor505-x_0_1859_Kodak_M1063_0_9540_1540014292_3664_2748.csv\n",
      "0.9914529914529915 0.9977409638554217\n",
      "254 Nikon_D200_0_14908_Kodak_M1063_0_9406_1540038194_3664_2748.csv\n",
      "0.9883381924198251 0.9947289156626506\n",
      "255 Kodak_M1063_0_9559_Nikon_D200_0_15052_1540019649_3872_2592.csv\n",
      "1.0 0.9979789384108073\n",
      "256 Rollei_RCP-7325XS_0_42262_Sony_DSC-H50_0_46972_1540034762_3456_2592.csv\n",
      "0.9322916666666666 0.9558156197754956\n",
      "257 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42218_1540022852_3072_2304.csv\n",
      "0.871301775147929 0.952887537993921\n",
      "258 Sony_DSC-H50_0_46908_Agfa_Sensor505-x_0_1709_1540036840_2592_1944.csv\n",
      "1.0 0.9746835443037974\n",
      "259 Kodak_M1063_0_9489_Nikon_D200_0_15012_1540018801_3872_2592.csv\n",
      "0.873015873015873 0.9734070843527284\n",
      "260 Agfa_Sensor505-x_0_1811_Kodak_M1063_0_9471_1540014512_3664_2748.csv\n",
      "0.96 0.9709552495697074\n",
      "261 Rollei_RCP-7325XS_0_42337_Sony_DSC-H50_0_47002_1540023810_3456_2592.csv\n",
      "0.9573643410852714 0.969906854549797\n",
      "262 Kodak_M1063_0_9579_Rollei_RCP-7325XS_0_42204_1540046961_3072_2304.csv\n",
      "0.7823660714285714 0.8524316109422493\n",
      "263 Nikon_D200_0_15137_Rollei_RCP-7325XS_0_42267_1540023308_3072_2304.csv\n",
      "0.9653948535936113 0.9819148936170212\n",
      "264 Agfa_Sensor505-x_0_1796_Kodak_M1063_0_9407_1540014477_3664_2748.csv\n",
      "1.0 0.9964500860585198\n",
      "265 Sony_DSC-H50_0_47004_Rollei_RCP-7325XS_0_42205_1540042227_3072_2304.csv\n",
      "0.6625 0.8343465045592705\n",
      "266 Nikon_D200_0_15137_Rollei_RCP-7325XS_0_42236_1540023278_3072_2304.csv\n",
      "0.94994994994995 0.9781155015197568\n",
      "267 Kodak_M1063_0_9559_Nikon_D200_0_15056_1540018897_3872_2592.csv\n",
      "0.7472527472527473 0.9891500904159132\n",
      "268 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42236_1540022532_3072_2304.csv\n",
      "0.8910256410256411 0.9630699088145896\n",
      "269 Rollei_RCP-7325XS_0_42208_Sony_DSC-H50_0_46910_1540034299_3456_2592.csv\n",
      "0.787719298245614 0.9253642225937425\n",
      "270 Rollei_RCP-7325XS_0_42252_Sony_DSC-H50_0_47002_1540028195_3456_2592.csv\n",
      "0.8842105263157894 0.969668020062097\n",
      "271 Agfa_Sensor505-x_0_1811_Kodak_M1063_0_9457_1540016886_2748_3664.csv\n",
      "1.0 0.9977409638554217\n",
      "272 Nikon_D200_0_14908_Rollei_RCP-7325XS_0_42194_1540022746_3072_2304.csv\n",
      "0.9867424242424242 0.9958966565349544\n",
      "273 Kodak_M1063_0_9583_Rollei_RCP-7325XS_0_42322_1540045771_3072_2304.csv\n",
      "0.6945812807881774 0.9088145896656535\n",
      "274 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42215_1540023061_3072_2304.csv\n",
      "1.0 0.9010638297872341\n",
      "275 Sony_DSC-H50_0_47027_Rollei_RCP-7325XS_0_42222_1540042297_3072_2304.csv\n",
      "0.9705882352941176 0.9797872340425532\n",
      "276 Sony_DSC-H50_0_46951_Agfa_Sensor505-x_0_1622_1540036956_2592_1944.csv\n",
      "0.8913043478260869 0.9672632038411174\n",
      "277 Rollei_RCP-7325XS_0_42208_Sony_DSC-H50_0_46904_1540027916_3456_2592.csv\n",
      "0.7472527472527473 0.9380224504418438\n",
      "278 Sony_DSC-H50_0_47447_Agfa_Sensor505-x_0_1796_1540035876_2592_1944.csv\n",
      "0.9852941176470589 0.9958533391532082\n",
      "279 Rollei_RCP-7325XS_0_42252_Sony_DSC-H50_0_46912_1540034707_3456_2592.csv\n",
      "1.0 0.9316933365177932\n",
      "280 Rollei_RCP-7325XS_0_42376_Sony_DSC-H50_0_46946_1540023575_3456_2592.csv\n",
      "0.9689922480620154 0.9785048961069979\n",
      "281 Kodak_M1063_0_9457_Nikon_D200_0_14908_1540106631_3872_2592.csv\n",
      "0.8695652173913043 0.9590469099032017\n",
      "282 Kodak_M1063_0_9457_Rollei_RCP-7325XS_0_42268_1540044934_3072_2304.csv\n",
      "0.9985119047619048 0.886322188449848\n",
      "283 Rollei_RCP-7325XS_0_42376_Sony_DSC-H50_0_46962_1540023607_3456_2592.csv\n",
      "0.8590971272229823 0.9433962264150944\n",
      "284 Agfa_Sensor505-x_0_1627_Kodak_M1063_0_9393_1540013514_3664_2748.csv\n",
      "0.6730769230769231 0.8170180722891566\n",
      "285 Kodak_M1063_0_9557_Nikon_D200_0_15135_1540106950_3872_2592.csv\n",
      "0.6746411483253588 0.877885331347729\n",
      "286 Rollei_RCP-7325XS_0_42262_Sony_DSC-H50_0_46919_1540034404_3456_2592.csv\n",
      "0.8404761904761905 0.890494387389539\n",
      "287 Sony_DSC-H50_0_47021_Agfa_Sensor505-x_0_1629_1540035230_2592_1944.csv\n",
      "0.9962121212121212 0.9847228284591881\n",
      "288 Nikon_D200_0_15026_Kodak_M1063_0_9457_1540040217_2748_3664.csv\n",
      "0.7919254658385093 0.9272805507745266\n",
      "289 Sony_DSC-H50_0_47447_Agfa_Sensor505-x_0_1675_1540037111_2592_1944.csv\n",
      "0.8875 0.9705368834570057\n",
      "290 Rollei_RCP-7325XS_0_42250_Sony_DSC-H50_0_46970_1540033793_3456_2592.csv\n",
      "0.8773584905660378 0.9393360401241939\n",
      "291 Rollei_RCP-7325XS_0_42337_Sony_DSC-H50_0_47012_1540034567_3456_2592.csv\n",
      "0.914349276974416 0.959398137090996\n",
      "292 Kodak_M1063_0_9583_Nikon_D200_0_15056_1540019681_3872_2592.csv\n",
      "1.0 0.9975534517604511\n",
      "293 Sony_DSC-H50_0_47035_Rollei_RCP-7325XS_0_42203_1540044126_3072_2304.csv\n",
      "0.94 0.9840425531914894\n",
      "294 Nikon_D200_0_15137_Rollei_RCP-7325XS_0_42306_1540023333_3072_2304.csv\n",
      "0.9600301659125189 0.9782674772036474\n",
      "295 Kodak_M1063_0_9555_Nikon_D200_0_15046_1540019627_3872_2592.csv\n",
      "0.9780701754385965 0.9911711520051059\n",
      "296 Nikon_D200_0_15137_Rollei_RCP-7325XS_0_42204_1540023229_3072_2304.csv\n",
      "0.9646464646464646 0.9866261398176291\n",
      "297 Agfa_Sensor505-x_0_1821_Kodak_M1063_0_9457_1540016940_2748_3664.csv\n",
      "1.0 0.9935456110154905\n",
      "298 Sony_DSC-H50_0_46912_Agfa_Sensor505-x_0_1620_1540036933_2592_1944.csv\n",
      "0.7136222910216719 0.8622872108249673\n",
      "299 Nikon_D200_0_15026_Kodak_M1063_0_9578_1540040928_3664_2748.csv\n",
      "1.0 0.9936531841652324\n",
      "300 Sony_DSC-H50_0_47027_Agfa_Sensor505-x_0_1627_1540036071_2592_1944.csv\n",
      "1.0 0.9901789611523353\n",
      "301 Nikon_D200_0_15026_Kodak_M1063_0_9531_1540040870_3664_2748.csv\n",
      "0.912 0.9705249569707401\n",
      "302 Kodak_M1063_0_9457_Nikon_D200_0_15008_1540106226_3872_2592.csv\n",
      "0.7442528735632183 0.9237315179236252\n",
      "303 Nikon_D200_0_15135_Rollei_RCP-7325XS_0_42362_1540022396_3072_2304.csv\n",
      "0.8833333333333333 0.9465045592705167\n",
      "304 Agfa_Sensor505-x_0_1858_Kodak_M1063_0_9585_1540017113_3664_2748.csv\n",
      "1.0 0.998171256454389\n",
      "305 Nikon_D200_0_15026_Kodak_M1063_0_9407_1540040187_3664_2748.csv\n",
      "0.9957142857142857 0.9967728055077453\n",
      "306 Nikon_D200_0_15026_Kodak_M1063_0_9493_1540040464_3664_2748.csv\n",
      "0.9849108367626886 0.9944061962134251\n",
      "307 Kodak_M1063_0_9579_Nikon_D200_0_14934_1540124764_3872_2592.csv\n",
      "0.8027027027027027 0.874162323157111\n",
      "308 Sony_DSC-H50_0_46998_Agfa_Sensor505-x_0_1806_1540035958_2592_1944.csv\n",
      "0.8297413793103449 0.919249236141423\n",
      "309 Agfa_Sensor505-x_0_1857_Kodak_M1063_0_9584_1540017107_3664_2748.csv\n",
      "0.9805194805194806 0.9922547332185886\n",
      "310 Nikon_D200_0_15026_Kodak_M1063_0_9516_1540040614_3664_2748.csv\n",
      "0.8812260536398467 0.9642857142857143\n",
      "311 Rollei_RCP-7325XS_0_42262_Sony_DSC-H50_0_47002_1540034480_3456_2592.csv\n",
      "0.9126984126984127 0.9436350609027944\n",
      "312 Rollei_RCP-7325XS_0_42208_Sony_DSC-H50_0_46912_1540041502_3456_2592.csv\n",
      "1.0 0.9479340816813948\n",
      "313 Sony_DSC-H50_0_46951_Agfa_Sensor505-x_0_1627_1540037219_2592_1944.csv\n",
      "1.0 0.9858140549978176\n",
      "314 Rollei_RCP-7325XS_0_42376_Sony_DSC-H50_0_47024_1540034140_3456_2592.csv\n",
      "0.8646616541353384 0.9474564127059948\n",
      "315 Kodak_M1063_0_9457_Rollei_RCP-7325XS_0_42220_1540044876_3072_2304.csv\n",
      "0.8564102564102564 0.9419452887537993\n",
      "316 Agfa_Sensor505-x_0_1857_Kodak_M1063_0_9470_1540017792_3664_2748.csv\n",
      "0.9166666666666666 0.9768717728055077\n",
      "317 Nikon_D200_0_15026_Kodak_M1063_0_9409_1540040391_3664_2748.csv\n",
      "0.9942857142857143 0.997525817555938\n",
      "318 Sony_DSC-H50_0_46968_Agfa_Sensor505-x_0_1683_1540037187_2592_1944.csv\n",
      "0.9513888888888888 0.9836316019205588\n",
      "319 Sony_DSC-H50_0_46953_Rollei_RCP-7325XS_0_42209_1540044314_3072_2304.csv\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.7263736263736263 0.8752279635258359\n",
      "320 Sony_DSC-H50_0_47447_Rollei_RCP-7325XS_0_42214_1540042779_3072_2304.csv\n",
      "1.0 0.9949848024316109\n",
      "321 Kodak_M1063_0_9457_Rollei_RCP-7325XS_0_42218_1540044834_3072_2304.csv\n",
      "0.9841269841269841 0.9922492401215806\n",
      "322 Kodak_M1063_0_9457_Rollei_RCP-7325XS_0_42215_1540045888_3072_2304.csv\n",
      "1.0 0.9153495440729483\n",
      "323 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42273_1540022907_3072_2304.csv\n",
      "0.8641025641025641 0.9439209726443769\n",
      "324 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42306_1540022925_3072_2304.csv\n",
      "0.9923076923076923 0.9937689969604864\n",
      "325 Kodak_M1063_0_9375_Nikon_D200_0_14906_1540017861_3872_2592.csv\n",
      "0.6329365079365079 0.9196893947452399\n",
      "326 Sony_DSC-H50_0_46951_Rollei_RCP-7325XS_0_42214_1540042461_3072_2304.csv\n",
      "0.9527777777777777 0.9749240121580547\n",
      "327 Agfa_Sensor505-x_0_1633_Kodak_M1063_0_9403_1540013606_3664_2748.csv\n",
      "1.0 0.9935456110154905\n",
      "328 Kodak_M1063_0_9584_Rollei_RCP-7325XS_0_42306_1540046593_3072_2304.csv\n",
      "0.9927536231884058 0.9965045592705167\n",
      "329 Sony_DSC-H50_0_47027_Rollei_RCP-7325XS_0_42207_1540042248_3072_2304.csv\n",
      "1.0 0.9768996960486322\n",
      "330 Sony_DSC-H50_0_46953_Rollei_RCP-7325XS_0_42220_1540042501_3072_2304.csv\n",
      "1.0 0.9367781155015198\n",
      "331 Sony_DSC-H50_0_46962_Agfa_Sensor505-x_0_1628_1540035423_2592_1944.csv\n",
      "0.8289855072463768 0.8574858140549978\n",
      "332 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42194_1540023187_3072_2304.csv\n",
      "0.8962962962962963 0.9595744680851064\n",
      "333 Rollei_RCP-7325XS_0_42359_Sony_DSC-H50_0_46927_1540028069_3456_2592.csv\n",
      "0.7941176470588235 0.9519942679722952\n",
      "334 Kodak_M1063_0_9457_Rollei_RCP-7325XS_0_42203_1540046309_3072_2304.csv\n",
      "0.9671201814058957 0.9846504559270517\n",
      "335 Kodak_M1063_0_9457_Nikon_D200_0_14984_1540106210_3872_2592.csv\n",
      "0.9911111111111112 0.9973407084352729\n",
      "336 Nikon_D200_0_15026_Kodak_M1063_0_9537_1540040284_3664_2748.csv\n",
      "1.0 0.9917168674698795\n",
      "337 Agfa_Sensor505-x_0_1695_Kodak_M1063_0_9385_1540014092_2748_3664.csv\n",
      "1.0 0.9964500860585198\n",
      "338 Sony_DSC-H50_0_46951_Rollei_RCP-7325XS_0_42236_1540042526_3072_2304.csv\n",
      "0.9885057471264368 0.9817629179331308\n",
      "339 Sony_DSC-H50_0_47004_Rollei_RCP-7325XS_0_42215_1540044385_3072_2304.csv\n",
      "0.9930555555555556 0.9910334346504559\n",
      "340 Sony_DSC-H50_0_46953_Rollei_RCP-7325XS_0_42203_1540042176_3072_2304.csv\n",
      "0.7028571428571428 0.9098784194528875\n",
      "341 Kodak_M1063_0_9555_Nikon_D200_0_15064_1540019330_3872_2592.csv\n",
      "0.8530701754385965 0.954472928411871\n",
      "342 Agfa_Sensor505-x_0_1695_Kodak_M1063_0_9474_1540013715_3664_2748.csv\n",
      "1.0 0.9959122203098106\n",
      "343 Agfa_Sensor505-x_0_1788_Kodak_M1063_0_9406_1540014453_3664_2748.csv\n",
      "1.0 0.9996772805507745\n",
      "344 Agfa_Sensor505-x_0_1806_Kodak_M1063_0_9409_1540014174_3664_2748.csv\n",
      "0.9821428571428571 0.9965576592082617\n",
      "345 Kodak_M1063_0_9557_Nikon_D200_0_15078_1540018382_3872_2592.csv\n",
      "0.7133995037220844 0.9145835549409638\n",
      "346 Sony_DSC-H50_0_47004_Rollei_RCP-7325XS_0_42323_1540044036_3072_2304.csv\n",
      "0.9565217391304348 0.9808510638297873\n",
      "347 Rollei_RCP-7325XS_0_42252_Sony_DSC-H50_0_47012_1540028218_3456_2592.csv\n",
      "0.9812925170068028 0.9928349653689993\n",
      "348 Sony_DSC-H50_0_47035_Agfa_Sensor505-x_0_1674_1540036585_2592_1944.csv\n",
      "0.988 0.9936708860759493\n",
      "349 Kodak_M1063_0_9596_Rollei_RCP-7325XS_0_42203_1540046691_3072_2304.csv\n",
      "0.7507002801120448 0.9424012158054711\n",
      "350 Kodak_M1063_0_9583_Rollei_RCP-7325XS_0_42219_1540046488_3072_2304.csv\n",
      "0.7218045112781954 0.9197568389057751\n",
      "351 Kodak_M1063_0_9559_Rollei_RCP-7325XS_0_42208_1540046423_3072_2304.csv\n",
      "1.0 0.9504559270516717\n",
      "352 Sony_DSC-H50_0_47031_Agfa_Sensor505-x_0_1680_1540035609_2592_1944.csv\n",
      "1.0 0.9877782627673505\n",
      "353 Nikon_D200_0_15137_Rollei_RCP-7325XS_0_42218_1540023251_3072_2304.csv\n",
      "0.9518963922294172 0.9816109422492402\n",
      "354 Rollei_RCP-7325XS_0_42252_Sony_DSC-H50_0_46910_1540027974_3456_2592.csv\n",
      "0.8888888888888888 0.9678767614043468\n",
      "355 Sony_DSC-H50_0_47027_Agfa_Sensor505-x_0_1878_1540036373_2592_1944.csv\n",
      "0.9742351046698873 0.9690091663029244\n",
      "356 Agfa_Sensor505-x_0_1633_Kodak_M1063_0_9393_1540016447_3664_2748.csv\n",
      "0.6507936507936508 0.8216437177280551\n",
      "357 Agfa_Sensor505-x_0_1627_Kodak_M1063_0_9367_1540013495_3664_2748.csv\n",
      "0.9642857142857143 0.9979561101549054\n",
      "358 Sony_DSC-H50_0_46953_Agfa_Sensor505-x_0_1625_1540036968_2592_1944.csv\n",
      "0.705685618729097 0.8793103448275862\n",
      "359 Kodak_M1063_0_9525_Nikon_D200_0_15012_1540128765_3872_2592.csv\n",
      "0.7638248847926268 0.8752260397830018\n",
      "360 Agfa_Sensor505-x_0_1667_Kodak_M1063_0_9385_1540014021_2748_3664.csv\n",
      "0.9375 0.9934380378657487\n",
      "361 Sony_DSC-H50_0_47447_Rollei_RCP-7325XS_0_42205_1540044237_3072_2304.csv\n",
      "0.6403508771929824 0.8677811550151976\n",
      "362 Nikon_D200_0_15026_Kodak_M1063_0_9532_1540040650_3664_2748.csv\n",
      "0.926896551724138 0.9723537005163512\n",
      "363 Sony_DSC-H50_0_47413_Rollei_RCP-7325XS_0_42204_1540044189_3072_2304.csv\n",
      "0.9547325102880658 0.971580547112462\n",
      "364 Nikon_D200_0_14908_Kodak_M1063_0_9457_1540039923_2748_3664.csv\n",
      "0.9752186588921283 0.9921471600688468\n",
      "365 Nikon_D200_0_15026_Rollei_RCP-7325XS_0_42236_1540022293_3072_2304.csv\n",
      "0.912 0.9697568389057751\n",
      "366 Sony_DSC-H50_0_46953_Rollei_RCP-7325XS_0_42222_1540042508_3072_2304.csv\n",
      "1.0 0.9389057750759878\n",
      "367 Rollei_RCP-7325XS_0_42337_Sony_DSC-H50_0_47015_1540034038_3456_2592.csv\n",
      "0.966794380587484 0.9806544064962981\n",
      "368 Sony_DSC-H50_0_47027_Rollei_RCP-7325XS_0_42218_1540042271_3072_2304.csv\n",
      "0.9702380952380952 0.9851063829787234\n",
      "369 Nikon_D200_0_14908_Kodak_M1063_0_9493_1540040806_3664_2748.csv\n",
      "0.9981481481481481 0.997525817555938\n",
      "370 Sony_DSC-H50_0_46968_Rollei_RCP-7325XS_0_42214_1540044352_3072_2304.csv\n",
      "0.9559228650137741 0.9879939209726444\n",
      "371 Sony_DSC-H50_0_46951_Rollei_RCP-7325XS_0_42216_1540042477_3072_2304.csv\n",
      "1.0 0.9720364741641337\n",
      "372 Agfa_Sensor505-x_0_1811_Kodak_M1063_0_9529_1540014253_3664_2748.csv\n",
      "0.9923076923076923 0.9960197934595525\n",
      "373 Kodak_M1063_0_9583_Rollei_RCP-7325XS_0_42309_1540045731_3072_2304.csv\n",
      "0.9244663382594417 0.9103343465045592\n",
      "374 Agfa_Sensor505-x_0_1811_Kodak_M1063_0_9500_1540014213_3664_2748.csv\n",
      "1.0 0.9961273666092944\n",
      "375 Nikon_D200_0_14908_Kodak_M1063_0_9457_1540040775_2748_3664.csv\n",
      "0.9793103448275862 0.9889199655765921\n",
      "376 Agfa_Sensor505-x_0_1778_Kodak_M1063_0_9409_1540016530_3664_2748.csv\n",
      "0.9555555555555556 0.9894578313253012\n",
      "377 Nikon_D200_0_14902_Kodak_M1063_0_9393_1540040138_3664_2748.csv\n",
      "0.8248299319727891 0.8677925989672978\n",
      "378 Nikon_D200_0_15026_Kodak_M1063_0_9529_1540040856_3664_2748.csv\n",
      "1.0 0.9728915662650602\n",
      "379 Kodak_M1063_0_9579_Nikon_D200_0_14908_1540124748_3872_2592.csv\n",
      "0.726027397260274 0.8455483459206468\n",
      "380 Kodak_M1063_0_9534_Nikon_D200_0_15012_1540019588_3872_2592.csv\n",
      "0.9761904761904762 0.9970215934475056\n",
      "381 Sony_DSC-H50_0_46953_Rollei_RCP-7325XS_0_42320_1540043976_3072_2304.csv\n",
      "0.7465277777777778 0.8799392097264438\n",
      "382 Nikon_D200_0_15157_Rollei_RCP-7325XS_0_42306_1540022615_3072_2304.csv\n",
      "0.9575163398692811 0.985258358662614\n",
      "383 Sony_DSC-H50_0_47032_Agfa_Sensor505-x_0_1681_1540035625_2592_1944.csv\n",
      "0.9812834224598931 0.9797031863814928\n",
      "384 Kodak_M1063_0_9489_Nikon_D200_0_15012_1540106251_3872_2592.csv\n",
      "0.9789473684210527 0.9928730986065312\n",
      "385 Nikon_D200_0_15026_Kodak_M1063_0_9540_1540040689_3664_2748.csv\n",
      "1.0 0.9776247848537005\n",
      "386 Nikon_D200_0_15026_Kodak_M1063_0_9464_1540040419_2748_3664.csv\n",
      "0.8076923076923077 0.9322289156626506\n",
      "387 Rollei_RCP-7325XS_0_42337_Sony_DSC-H50_0_47009_1540034551_3456_2592.csv\n",
      "0.9160919540229885 0.9542631956054455\n",
      "388 Nikon_D200_0_15137_Rollei_RCP-7325XS_0_42203_1540124910_3072_2304.csv\n",
      "0.9409937888198758 0.9711246200607903\n",
      "389 Sony_DSC-H50_0_47027_Agfa_Sensor505-x_0_1629_1540036538_2592_1944.csv\n",
      "0.958974358974359 0.9803579223046704\n",
      "390 Sony_DSC-H50_0_47366_Agfa_Sensor505-x_0_1638_1540036204_2592_1944.csv\n",
      "0.8345864661654135 0.9498035792230467\n",
      "391 Kodak_M1063_0_9457_Rollei_RCP-7325XS_0_42204_1540044752_3072_2304.csv\n",
      "0.7801932367149759 0.9302431610942249\n",
      "392 Kodak_M1063_0_9403_Nikon_D200_0_14908_1540017887_3872_2592.csv\n",
      "0.601010101010101 0.950749920221253\n",
      "393 Nikon_D200_0_15026_Kodak_M1063_0_9410_1540040201_3664_2748.csv\n",
      "0.9419642857142857 0.9809595524956971\n",
      "394 Nikon_D200_0_14902_Rollei_RCP-7325XS_0_42216_1540022463_3072_2304.csv\n",
      "0.9778911564625851 0.9913373860182371\n",
      "395 Rollei_RCP-7325XS_0_42376_Sony_DSC-H50_0_47012_1540034877_3456_2592.csv\n",
      "0.9608323133414932 0.9728922856460472\n",
      "396 Rollei_RCP-7325XS_0_42262_Sony_DSC-H50_0_46972_1540034454_3456_2592.csv\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8981900452488688 0.9414855505134941\n",
      "397 Agfa_Sensor505-x_0_1858_Kodak_M1063_0_9542_1540017051_3664_2748.csv\n",
      "0.9829059829059829 0.9945137693631669\n",
      "398 Nikon_D200_0_15137_Rollei_RCP-7325XS_0_42220_1540023260_3072_2304.csv\n",
      "0.9732142857142857 0.9907294832826747\n",
      "399 Sony_DSC-H50_0_46953_Agfa_Sensor505-x_0_1794_1540036907_2592_1944.csv\n",
      "0.6885964912280702 0.9002618943692711\n",
      "400 Kodak_M1063_0_9564_Nikon_D200_0_15078_1540019372_3872_2592.csv\n",
      "0.71875 0.9700031911498777\n",
      "401 Kodak_M1063_0_9583_Rollei_RCP-7325XS_0_42222_1540046512_3072_2304.csv\n",
      "1.0 0.9103343465045592\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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6L777tPo0aNDuV8AAAAAJpT9fzcYttbCf/6ZYWt54vNL+3bv3q1du3apU6dOTS03N1e333675syZI0k6fvy4n8ubbcwknU6n0+l0Op1uhh5+eGnfRTQ0NMjhcKigoKCpHTx4UF988YWGDRvW1K677rqgbxAAAAAAzManG6l58+apX79+SkpKamr79+9Xhw4dNHnyZH322Wdq166dxo8fr5SUlJBtFgAAAIA5RdrwBa+/786dO1VeXq6srKwLusvl0ieffKIHH3xQb7/9th566CE9+eSTIdsoAAAAAJiF14PU9u3bVVFRoYyMDNntdh09elQjRozQoUOHZLPZlJ6eLknq06ePjh8/rlOnToV80wAAAADMxWpxG/YwA68HqVGjRmnz5s0qKytTWVmZOnbsqFdffVUjR45UbGys9u3bJ+n7A1fr1q3Vpk2bkG8aAAAAAHxx4MABPfzww+rbt68efvhhHTx40OPPfvnll7r11lvldDq9Pq9f488lyW63q6ioSKmpqfr000/1/PPPq6GhQa1atdLkyZN1yy23+PN0AAAAAK4C47aVGbbWnN52n3926NCh+uUvf6n+/fvrnXfe0apVq/T66683+7nGxkb95je/Ufv27dW+fXtNmDDhks/r90EquMw2ZpJOp9PpdDqdTjdDDz9mPEidPHlSffv21bZt2xQVFaXGxkb17t1bpaWlSkxMvOBnFy1apOjoaJ09e1Znz571epDy+XOkAAAAAMATI6f21dXVqa6urlmPj49XfHx809fV1dXq0KGDoqKiJElRUVFq3769qqurLzhIff7559q8ebNef/11LVy40Kc9cJACAAAAEFaWLl2qwsLCZn306NEaM2aMX8/117/+VVOnTtULL7zQdODyBQcpAAAAAAGzWoxba9iwYRo4cGCz/j9voyTJZrPp66+/VmNjY9NL+44dOyabzdb0M8ePH1dlZaVGjRol6fvbLrfbrTNnzmjatGke98BBCgAAAEBY+fuX8HnStm1bpaWlad26derfv7/WrVuntLS0C17Wd/3112vbtm1NX8+fP9+n90hd4WETAAAAAK4GE7Z/aNhazn/M8PlnKyoqlJubq7q6OsXHx8vpdKpr1656/PHH9fTTT+vmm2++4OdDcpAqLCzU/PnzVVxcrNTUVK1cuVJLly6V1WpVVFSUJk2a1PQBvb4x23QUOp1O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xw7Fx8crIiJCktSjRw8NHTpUu3fvliTt3r1bQ4cOVffu3TtmpAAAAABgEe22P2+WmJiopUuXasyYMc6sqKhIixYtUnV1tcLCwpSVlaVBgwZ12GABAAAAWNO5xhyfneuGLok+O1drPF5IdQyrtZkkJycnJycnJycnt0Luf6q/2+Ozc4VdM85n52pNYL39MAAAAABcAe2+IS8AAAAAtM8aTSB8hR0pAAAAAPASO1IAAAAALptV3ijXV9iRAgAAAAAvtdu17+TJk5o7d67z45qaGtXW1ionJ0cLFy5USUmJunTpohtvvFErVqzgfaQAAACAAFT7Xa7PznX9NQk+O1drvG5/vnLlSjkcDj3xxBP64osvFBcXJ0nKysrSuXPnlJmZ6cXRrNZmkpycnJycnJycnNwKuf8JtIWUVy/ta2xsVHZ2tqZMmaLw8HDnIkqSYmNj9fe///2KDxAAAACAPwjy4e3q82oUubm5ioyMVHR0dIu8qalJb775phISrv7KEAAAAAA6mldd+7Zt26YpU6a45BkZGbruuus0c+bMKzYwAAAAAP7DZqNrn1vl5eXKy8tTcnJyizwrK0tfffWVVq9eraAga2yzAQAAAEBH8nhHaseOHYqPj1dERIQze+mll5Sfn6+NGzeqS5cuHTJAAAAAAP4gsHakPO7al5iYqKVLl2rMmDGSpGPHjslut2vgwIHq2rWrJKlfv35av359x40WAAAAgCXVff9Xn52rW8gYn52rNV63P7+yrNZmkpycnJycnJycnNwKuf+p//4Dn53rupCf+excreGiJgAAAADwEgspAAAAAPCSV+3PAQAAAMC9wNqjCazZAgAAAMAVcJWbTQAAAADoDM5//6HPznVtyP/12bla0+5L+06ePKm5c+c6P66pqVFtba0OHTrkzNatW6e1a9cqOztbN9/sTZcRq3VHIScnJycnJycnJ7dCDqtrdyHVr18/7dq1y/nxypUr5XA4nB8fPXpUn3zyifr27dsxIwQAAABgeTZbYL0hr1fXSDU2Nio7O1tTpkxxfrxixQotX768I8YGAAAAAJbkVde+3NxcRUZGKjo6WpK0Zs0aTZo0Sf369euQwQEAAADwF+xItWrbtm3O3agjR44oPz9fM2bM6JCBAQAAAIBVebyQKi8vV15enpKTkyVJeXl5Kioq0t13362EhASdOnVKjzzyiPbt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eughk5SUZEaMGGGys7Nb1Lb12DZ/X1zsch/bhQsXevXYDhs27Io+toE4Z3ffz6NGjeqU38/GXPg9dvF87Xb7D55vW4+vL+c7ceLEVufb/PiOHDnysufrD4/vpfO9nN/PVnl825pvoP29EWjzhfXYjLnoaRp0iBMnTig9PV2FhYWKjIyUJJWXl2vIkCFavny5Bg0a1KL+0Ucf1ezZszVq1KgW+UsvvaSNGzfq888/d3uexsZG/fa3v1V+fr6+/PJL57Pb7up+/etfa9euXQoPD1dpaalCQkIUFxen5cuXq3///i3q9+7dq2eeeUZBQUH6zW9+o40bN+qbb77RqVOnlJ6eruTkZJdzGGOUn5+vsrIySVJUVJRuueUWt8/UnThxQl26dFGfPn1cjvHXv/5V8fHxbufR7J133lFeXp7S09PbrPvqq690/PhxNTU1OcfTmqqqKhljFBERodraWu3fv1/9+vVTdHR0q59TWVnZYr7du3dv9dhBQUEtng09d+6cbrjhBh0/flz/+I//2OY8PvnkEx08eLDVHdBm9fX1KikpUVNTk3r37t3qeC7lcDh09OhR9enTRz179nS5/9LHtFTAoQAABvFJREFUtqSkRI888kirj+0111yjvn37OrMPP/xQt912m8eP7YYNG7R79+426y5+bJvH05pLH9sPPvhAAwYMaPOxvXTOffr0UXR0tMdzbj6GJ3P+05/+pLy8PC1btqzNuovn3Dye1lzO93N9fb1CQ0M1aNAgXX/99W6PbbPZdMMNN0i68CzsiRMndOONN+rUqVPtfj/n5eXp448/1syZM90ev1nz93Ntba26du2qgQMHtlnfrLa2VidOnFBUVJR69OjR7nyltn9+z507J5vN5nY3w5Of3yNHjigvL0+PPvpom3UX//xGRUUpIiKizfpmDodDhYWF6t27t9uf32aXPr4DBw50O6dLf1+dP39eRUVFGjBggE6fPt3ufD/66CPl5eXpF7/4hdvjXzrf2tpahYaG6sYbb2y1vqmpybkDUV9fr6KiIvXu3Vs//vGPPZpvv379FBUV5baueb5NTU0qKytTcHCwBgwYoK5du7b5+FZVVamsrEy1tbU6fPhwu7+fy8vLVVJSIpvNpr59+7Y6novHX15eruDgYFVXV2vgwIFuH98r+ffGpk2bVFhY6HY8V+PvjeXLl8tutwf0fGFBV2sFF4g83YW7nB04Y67+LlxlZaVZunSpefjhh83mzZtb3OfuYk5vL/78IfXejqe53pPjFxYWmnvvvddMmTLFHD9+3MyePdsMHz7cjBkzxhQUFHhVf+lOxuUc/+c//7mzPiYmxqv61sZz6UW3//M//9PmhbfeXqh7uce/0uMx5sIzic2qq6tNWlqaufvuu01qaqrbn4HLqa+pqTFpaWkmISHBzJs3r0OO//TTT7d5fHcXS0+cOLHVi6W9vbj6StR7O5626kePHm0yMjLc/uy501zv7mfpStZ7Ox5P6729uN1X9RMmTHDWJyUleVXf1vFPnjxpHnnkETNkyBAzZMgQM3r0aDN8+HDzwgsvmIaGhlbrm5u9dFS9t+PxtL5ZoPy90SzQ5gvrYCF1lXm7desP9d5ezNlWvbsuZ1fy+Fei/he/+IX5y1/+Ynbs2GHuvPNOs2vXLmOMMe+9956ZNWtWp6r39sLbK1EfHR3docdvq96Ylt+Dzz33nElPTzdffPGFeemll8z8+fM7Xb23F0v7e/1dd91lVq5caX7605+ae+65x2zevLnVP7Q6Q723F7f7e/3MmTPNrl27TFVVlXnttdfMmjVrzJkzZ8ySJUvM8uXLO119M2/bgft7PXC1sJDyAXfPgjc/e3777bd7XH/s2LEOrb9S4/G265G/11/8h+qdd97Z4r7OVu9thyp/rzem5ddg0qRJprGx0flxe122/LHe265i/l7f/P3f2Nho/vSnP5nZs2eb2NhYs2DBgha7eZ2l3tsucP5ef/Hvc2MuvB2AMReuWxw3blynq/e2HfiVqB81alSHHr+t+rb4wxPPV7IeV0fI1X5pYSCw2+3q27dvi65BzaqqqjpdvbuuR1lZWa12PfL3+ou/LrfffnuL+9x1afPn+nnz5qmgoEBPPfWUJk+erOnTp7fZocrf66ULr3kvKiqSMUY2m61FZ7yLO0V1lvrmrmLz5893dhVLSkpqtauYv9c3u+aaazRhwgRNmDBB5eXl2rFjhzIyMvTnP/+5U9U3d4Grrq52doGLjY1ttQucv9eHhISopKREAwYMUH5+vrPTZlBQkEJCXP8E8vf6hQsXasaMGfr973/v/PluampSdna2nnnmGf3xj3/sVPXHjx93+Ro0O3v2rEvm7/WwoKuweAs4CQkJ5tSpU27vGzNmTKer97brkb/XP/74427ftbysrMzt+1j4e70xnneo6gz1zS/7a34pYPPPQk1NjduXnvp7vbddxfy93tv3avH3em+7/Pl7/d69e01cXJyx2+3OzzHGmG+++cYsXbq009V7+75Z/l7v7uXaF78svLPVw3pYSPnAiy++6Hwd96UyMjI6Xb23F3P6e31r6urqzJkzZzp1vacX3naW+ovV19e7/cO8s9R7e7G0v9afPHmy3WN1pvpLeXtxuz/Wnzt3znz66adunzDqbPXetgP393qrPZHc0fWwHtqfAwAAdALetgP39/qsrCyNGzfO+Ua2F3v++ef17LPPdqp6WA8LKQAAgE7E0/dF6yz1wNXieqUxAAAA/Fb37t0VHR2t6Oho5yIkOTm509a7E2j1uDro2gcAANAJtNYFzhjjVdc4f6+X/KMLH137/B8LKQAAgE7Aam+HQv2VrYf1sJACAADoBPr27as//OEPzkYNF4uPj6fez+thPVwjBQAA0AmMHz9eX3/9tdv7xo0bR72f18N66NoHAAAAAF5iRwoAAAAAvMRCCgAAAAC8xEIKAAAAALzEQgoAAAAAvMRCCgAAAAC89P8ANeahm0ZwSA4AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1152x720 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "'''\n",
    "scan all csv files, output localization result\n",
    "ctype=\"pre-train_32x32\" is forged images CNN csv output;\n",
    "ctype=\"pre-train-true_32x32\" is pristine images CNN csv output\n",
    "'''    \n",
    "\n",
    "cnt, score = 0, 0\n",
    "\n",
    "def localization_accuracy(threshold=0.009, threshold_texture=0.4, threshold_density=0.6, debug=True):\n",
    "    global cnt, score\n",
    "    result = np.zeros([len(os.listdir(csv_root)), 4])\n",
    "    for name in os.listdir(csv_root):\n",
    "        #print(cnt + 1, name)\n",
    "\n",
    "        (_w, _h) = (int(int(name.split(\"_\")[-2])), int(int(name.split(\"_\")[-1].split(\".\")[-2])))\n",
    "        (w, h) = int(_w / 32 - 1), int(_h / 32 - 1)\n",
    "\n",
    "        # label1 = tamper object from, label2 = tamper to image label\n",
    "        (label1, label2) = get_label(name)\n",
    "        ground_image = misc.imread(os.path.join(ground_root, name[:-14] + \".jpg\"))\n",
    "        mask_data, mark_x, mark_y = split_ground(ground_image, _w, _h, label1, label2, threshold=threshold_ground)\n",
    "\n",
    "        # @raw_data=[f1, f2, f3, f4, f5, p, y, texture]\n",
    "        raw_data = pd.read_csv(os.path.join(root_path, scope_name, name)).values[:w*h, 1:9]    \n",
    "        # get_label\n",
    "        label = int(np.argmax(np.bincount(np.array(raw_data[:, 5], dtype=np.int32))))\n",
    "\n",
    "        # filter texture\n",
    "        if threshold_texture > 0:\n",
    "            texture_data = filter_texture(raw_data, label, threshold=threshold_texture)\n",
    "        else:\n",
    "            texture_data = raw_data\n",
    "        \n",
    "        # fusion step1: F & Q\n",
    "        fusion_data = fushion_map(texture_data, w, h)\n",
    "        # fusion step2: R & ρ\n",
    "        density_data = fusion_denisty(fusion_data, w-1, h-1, label, threshold=threshold_density)\n",
    "    \n",
    "\n",
    "        same_count = np.sum(np.equal(mask_data, density_data[:, 5]))\n",
    "        tamper_same_count, area = compare_tamper(mask_data, density_data[:, 5], mark_x, mark_y, w-1, h-1)\n",
    "        \n",
    "        if debug:\n",
    "            if cnt == 0: show_map(density_data, w-1, h-1, label)\n",
    "            print(\"=> local accuracy={:.4f}, golbal accuracy={:.4f}\".format(tamper_same_count / area, same_count / mask_data.shape[0]))\n",
    "\n",
    "        score += tamper_same_count / area\n",
    "        result[cnt, :] = np.array(list([tamper_same_count, tamper_same_count / area, same_count, same_count / mask_data.shape[0]]))\n",
    "        cnt += 1\n",
    "    return result\n",
    "        \n",
    "# define threshold, texture, denisty\n",
    "t, t_texture, t_density = 0.009, 0, 0.6\n",
    "\n",
    "result = localization_accuracy(t, t_texture, t_density, debug=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 234,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "=> average local accuracy = 0.91046\n"
     ]
    }
   ],
   "source": [
    "print(\"=> average local accuracy={:.5f}\".format(np.sum(result[:, 1]) / 401))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 235,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "=> average global accuracy = 0.95623\n"
     ]
    }
   ],
   "source": [
    "print(\"=> average global accuracy={:.5f}\".format(np.sum(result[:, 3]) / 401))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
